/* eslint-disable */
/**
 * 功能：
 ***调用ios与android中的拍照上传 和 从相册中选择图片上传
 */
var nativeUploadPicture = (function (gl) {
  // 配置参数
  var configAll = {
    aliServer: '//bbtree-filesystem.oss.aliyuncs.com/'
  }

  var callBackFn = function () {
    console.log('请调用setCallBackFn设置上传图片后回调')
  }

  var isIos = null,
    isAndroid = null

  /**
   * 判断手机系统
   * @returns {{isIos: *, isAndroid: *}}
   */
  function getMobilesSystemObj () {
    if (isIos === null && isAndroid === null) {
      var u = navigator.userAgent, app = navigator.appVersion
      var nativeVersionsObj = {
        ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), // ios终端
        android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, // android终端或者uc浏览器
        iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, // 是否为iPhone或者QQHD浏览器
        iPad: u.indexOf('iPad') > -1 // 是否iPad
      }
      isIos = nativeVersionsObj.ios || nativeVersionsObj.iPhone || nativeVersionsObj.iPad
      isAndroid = nativeVersionsObj.android
    }
    return {
      isIos: isIos,
      isAndroid: isAndroid
    }
  }

  /***
     * 上传图片时的拍照功能
     * @param  {[type]} ratio []
     * @param  {[type]} count [限制照片的数]
     * @return {[type]}       [无，暴露有native调函数]
     */
  function takePictures (ratio, count) {
    if (getMobilesSystemObj().isIos === true) {
      window.location = 'objc://takePictures'
    } else {
      if (getMobilesSystemObj().isAndroid === true) {
        try {
          window.android.takePictures()
        } catch (e) {
          alert('window.android.takePictures error' + e.message || e)
        }
      }
    }
  }

  /**
   * 上传图片时相册选择
   * @param  {[type]} ratio []
   * @param  {[type]} count []
   * @return {[type]}       [无，暴露有native调函数]
   */
  function selectPictures (ratio, count) {
    if (getMobilesSystemObj().isIos === true) {
      window.location.href = 'uploadimage://?ratio=' + ratio + '&count=' + count || 10
    } else {
      if (getMobilesSystemObj().isAndroid === true) {
        try {
          window.android.uploadimage(ratio, count || 10, 0)
        } catch (e) {
          alert('window.android.uploadimage error' + e.message || e)
        }
      }
    }
  }

  /**
   * android端上传图片后的回调
   * @param  {[type]} state [数据]
   * @param  {[type]} urls  [图片的地址(未使用)]
   * @param  {[type]} msg   [错误消息(未使用)]
   */

  /* android端的调用测试时的state格式：
       {"code":"1","data":[
       "2016/06/03/0de35d75d7b1275346b850ef2255c6be/And/1464937241418-1244746321.jpg|
       2016/06/03/0de35d75d7b1275346b850ef2255c6be/And/1464937241418-1244746321.jpg@200h_200w",
       "2016/06/03/0de35d75d7b1275346b850ef2255c6be/And/1464937244070-1244746321.jpg|
       2016/06/03/0de35d75d7b1275346b850ef2255c6be/And/146493s7244070-1244746321.jpg@200h_200w"]}
      //关于@200h_200w：简单说就是让阿里服务器进行图片裁剪
   */
  window.uploadimageCallback = function (state, urls, msg) {
    disposePicture(state)
  }

  /**
   * ios端上传图片的回调
   * 开始时约定使用三个参数，实际只使用了state。参数暂时保留。
   * @param  {[type]} state [返回的数据]
   * @param  {[type]} urls  [图片地址(未使用)]
   * @param  {[type]} msg   [提示信息(未使用)]
   */

  /* IOS端的调用测试时的state格式：
        uploadImgCallback({"state":0,
        "urls":["2016/06/03/4577263e449636e5636f454355eb0482/crm-ios/1464932382974026.jpg|
        2016/06/03/4577263e449636e5636f454355eb0482/crm-ios/1464932382974026.jpg@200h_200w"],
        "msg":""})
     */
  window.uploadImgCallback = function (state, urls, msg) {
    if (!state) state = []
    disposePicture({
      'code': state['state'] || '1',
      'data': state['urls'] || [],
      'msg': state['msg'] || '成功'
    })
  }

  /**
   * 上传图片后的回调
   * @param  {[type]} data [回调的数据]		 *
   */
  function disposePicture (data) { // 处理上传图片
    var imgDataArr = []
    var imgDataSrc = data['data']
    var imgDataArr2 = []
    if (data && imgDataSrc && imgDataSrc.length) {
      // 带域名的完整图片地址 [http://bbtree-filesystem.oss.aliyuncs.com/2017/06/26/4577263e449636e5636f454355eb0482/crm-ios/1498460478730550.jpg]
      imgDataArr = imgDataSrc.map(function (url, index) {
        if (!url) return []// 空数组时做的处理
        var urlPath = url.split('|')[0]

        if (urlPath.indexOf(configAll.aliServer) != -1) // 检查是否是ali服务
        { return decodeURIComponent(urlPath) }
        return configAll.aliServer + decodeURIComponent(urlPath)
      })
      // 不带域名传给后端的地址 ['2016/06/03/4577263e449636e5636f454355eb0482/crm-ios/1464932382974026.jpg']
      imgDataArr2 = imgDataSrc.map(function (url, index) {
        if (!url) return []// 空数组时做的处理
        var urlPath = url.split('|')[0]
        return urlPath
      })
    }
    callBackFn(imgDataArr, imgDataArr2)
  }

  /**
   * takePictures调用拍照
   * selectPictures 获取图片
   * getMobilesSystemObj 判断手机系统
   * setCallBackFn(cbFn) 设置回调方法
   */
  return {
    takePictures: takePictures,
    selectPictures: selectPictures,
    getMobilesSystemObj: getMobilesSystemObj,
    setCallBackFn: function (cbFn) {
      if (typeof cbFn === 'function') {
        callBackFn = cbFn
      } else {
        console.log('setCallBackFn 需要一个方法')
      }
    }
  }
})(this)

export default{
  $uploadPicture: nativeUploadPicture
}
